# 并列柱状图
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置字体以便支持中文
import numpy as np

x = np.arange(4)  # 柱状图在横坐标上的位置
# 列出你要显示的数据，数据的列表长度与x长度相同
y1 = [1, 3, 5, 4]
y2 = [2, 5, 3, 1]

bar_width = 0.3  # 设置柱状图的宽度
tick_label = ['City 1', 'City 2', 'City 3', 'City 4']

plt.subplot(121)
# 绘制并列柱状图
plt.bar(x, y1, bar_width, color='salmon', label='class A')
plt.bar(x + bar_width, y2, bar_width, color='orchid', label='class B')
plt.title('Cities Comparison')
plt.legend()  # 显示图例，即label
plt.xticks(x + bar_width / 2, tick_label)  # 显示x坐标轴的标签,即tick_label,调整位置，使其落在两个直方图中间位置

plt.subplot(122)

plt.bar(x, y1, bar_width, color='salmon', hatch='//', label='class A')  # 对于hatch:可以选择多种涂阴影的符号，有{'/', '\', '|', '-'
# , '+', 'x', 'o', 'O', '.', '*'}等很多种。允许多个，比如'////'的线条会更密。

plt.bar(x + bar_width, y2, bar_width, color='orchid', label='class B')
plt.title('Comparison--Hatch Filling')
plt.legend()  # 显示图例，即label
plt.xticks(x + bar_width / 2, tick_label)  # 显示x坐标轴的标签,即tick_label,调整位置，使其落在两个直方图中间位置
plt.show()
